home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.extensibility.util.FilteredEnumerator;
- import com.extensibility.xml.dt.DataTypeIntf;
- import com.extensibility.xml.dt.Facet;
- import java.text.Format;
- import java.text.MessageFormat;
- import java.util.Enumeration;
- import java.util.MissingResourceException;
- import java.util.ResourceBundle;
- import java.util.Vector;
-
- public class ConversionScan implements ConversionErrors {
- private SchemaIntf schema;
- private String target;
- private Vector warnings;
- private SchemaFlavorIntf flavor;
- private static ResourceBundle res;
-
- public ConversionScan(SchemaIntf var1, String var2) {
- this.schema = var1;
- this.target = var2;
- this.warnings = new Vector();
- this.flavor = FlavorRegistry.getDefaultRegistry().createFlavor(var1, var2);
- }
-
- public static void setMessageBundle(ResourceBundle var0) {
- res = var0;
- }
-
- public String getMessage(int var1) {
- return this.getMessage(var1, (String)null);
- }
-
- public String getMessage(int var1, String var2) {
- return this.getMessage(var1, var2, (String)null);
- }
-
- public String getMessage(String var1, String var2) {
- return this.getMessage(0, var2, var1);
- }
-
- public String getMessage(String var1) {
- return this.getMessage(0, (String)null, var1);
- }
-
- public String getMessage(int var1, String var2, String var3) {
- String var5 = null;
-
- String var4;
- try {
- if (var3 == null) {
- var5 = (new Integer(var1)).toString();
- } else {
- var5 = var3;
- }
-
- if (res == null) {
- throw new MissingResourceException("", "", "");
- }
-
- var4 = res.getString(var5);
- } catch (MissingResourceException var8) {
- return var5;
- }
-
- MessageFormat var6 = new MessageFormat(var4);
- String[] var7 = new String[]{var2 != null ? var2 : ""};
- var4 = ((Format)var6).format(var7);
- return var4;
- }
-
- public Enumeration getUsedBy(InternalPEDeclaration var1) {
- return new FilteredEnumerator(this.schema.getDeclarations(), new 1(var1, (ConversionScan)null));
- }
-
- private void checkFacets(BaseDeclaration var1, DataTypeIntf var2) {
- if (var2.hasFacet(Facet.FACET_DECIMALS_NAME) && !this.flavor.isSupported("GESTALT_FACET_DECIMALS")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_DECIMALS_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_DIGITS_NAME) && !this.flavor.isSupported("GESTALT_FACET_DIGITS")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_DIGITS_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_MIN_NAME) && !this.flavor.isSupported("GESTALT_FACET_MIN")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_MIN_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_MAX_NAME) && !this.flavor.isSupported("GESTALT_FACET_MAX")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_MAX_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_MAXEX_NAME) && !this.flavor.isSupported("GESTALT_FACET_MAXEX")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_MAXEX_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_MINEX_NAME) && !this.flavor.isSupported("GESTALT_FACET_MINEX")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_MINEX_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_MAXLENGTH_NAME) && !this.flavor.isSupported("GESTALT_FACET_MAXLENGTH")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_MAXLENGTH_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_MINLENGTH_NAME) && !this.flavor.isSupported("GESTALT_FACET_MINLENGTH")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_MINLENGTH_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_LENGTH_NAME) && !this.flavor.isSupported("GESTALT_FACET_LENGTH")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_LENGTH_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_ENCODING_NAME) && !this.flavor.isSupported("GESTALT_FACET_ENCODING")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_ENCODING_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_PERIOD_NAME) && !this.flavor.isSupported("GESTALT_FACET_PERIOD")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_PERIOD_NAME));
- }
-
- if (var2.hasFacet(Facet.FACET_PATTERN_NAME) && !this.flavor.isSupported("GESTALT_FACET_PATTERN")) {
- this.addWarning(var1, this.getMessage(104, Facet.FACET_PATTERN_NAME));
- }
-
- }
-
- public void scan() {
- this.warnings = new Vector();
- if (this.schema != null && this.flavor != null) {
- if (!this.flavor.getFlavorName().equals(this.schema.getFlavorName())) {
- for(int var1 = 0; var1 < this.schema.getCount(); ++var1) {
- BaseDeclaration var2 = this.schema.getIndDeclaration(var1);
- if (!this.flavor.isSupported(var2.getClass())) {
- boolean var3 = false;
- if (var2.getClass() == Class.forName("com.extensibility.xml.InternalPEDeclaration")) {
- InternalPEDeclaration var4 = (InternalPEDeclaration)var2;
- if (var4.getContentModel() != null && this.flavor.isSupported("GESTALT_REUSABLE_CONTENTMODEL")) {
- var3 = true;
- } else if (var4.getAttributeGroup() != null && this.flavor.isSupported("GESTALT_REUSABLE_ATTRIBUTEGROUP")) {
- var3 = true;
- } else {
- Enumeration var5 = this.getUsedBy((InternalPEDeclaration)var2);
-
- while(var5.hasMoreElements()) {
- BaseDeclaration var6 = (BaseDeclaration)var5.nextElement();
- this.addWarning(var6, this.getMessage(101, var2.getName()), 1);
- }
- }
- }
-
- if (this.flavor.isSupported("GESTALT_MULTI_INSTANCE_MODULES") && var2.getClass() == Class.forName("com.extensibility.xml.ExternalSubset")) {
- var3 = true;
- }
-
- if (!var3) {
- this.addWarning(var2, this.getMessage(100, this.getMessage(var2.getClassName())));
- }
- }
-
- if (var2.getClass() == Class.forName("com.extensibility.xml.AttributeDeclaration")) {
- AttributeDeclaration var8 = (AttributeDeclaration)var2;
- if (var8.isGlobal() && !this.flavor.isSupported("GESTALT_GLOBAL_ATTRS")) {
- this.addWarning(var8, this.getMessage(102, ((BaseDeclaration)var8).getName()));
- }
-
- if (!var8.isGlobal() && !var8.isReference() && this.flavor.isSupported("GESTALT_FORBID_LOCAL_ATTRS")) {
- this.addWarning(var8, this.getMessage(103, ((BaseDeclaration)var8).getName()), 0);
- }
-
- this.checkFacets(var8, var8.getDataType());
- }
-
- if (var2.getClass() == Class.forName("com.extensibility.xml.DataTypeDeclaration")) {
- DataTypeDeclaration var9 = (DataTypeDeclaration)var2;
- this.checkFacets(var9, var9.getDataType());
- }
-
- ContentModel var10 = null;
- if (var2.getClass() == Class.forName("com.extensibility.xml.ElementDeclaration")) {
- var10 = ((ElementDeclaration)var2).getEffectiveModel();
- if (var10 != null && ((ElementDeclaration)var2).getSuperType() != null && !this.flavor.isSupported("GESTALT_EXTENDS")) {
- String var11 = ((ElementDeclaration)var2).getSuperType().getName();
- this.addWarning(var2, this.getMessage(105, var11));
- }
- }
-
- if (var2.getClass() == Class.forName("com.extensibility.xml.InternalPEDeclaration")) {
- var10 = ((InternalPEDeclaration)var2).getContentModel();
- }
-
- if (var10 != null) {
- if (!var10.isOpen() && !this.flavor.isSupported("GESTALT_OPEN_CONTENT")) {
- this.addWarning(var2, this.getMessage(106, var2.getName()));
- }
-
- if ((var10.isMixed() || var10.isAny()) && this.flavor.isSupported("GESTALT_FORBID_ANY_AND_MIXED")) {
- this.addWarning(var2, this.getMessage(107, var2.getName()));
- }
-
- Object var12 = null;
- if (var10.getRootGroup() != null) {
- ContentModelTermEnum var13 = var10.getRootGroup().getTerms(true);
-
- while(var13.hasMoreElements()) {
- ContentModelTerm var14 = var13.nextContentModelTerm();
- if (var14 != null) {
- String var15 = var14.getOccuranceAsString(true, true);
- if (var15 != null && var15.length() > 1 && !this.flavor.isSupported("GESTALT_MIN_MAX_OCCURS")) {
- this.addWarning(var2, this.getMessage(108, var14.getTerm()));
- }
-
- if (var14.getLocalTag() != null && !this.flavor.isSupported("GESTALT_LOCAL_TAG")) {
- this.addWarning(var2, this.getMessage(109, var14.getLocalTag()));
- }
-
- if (!this.flavor.isSupported("GESTALT_TYPE_IN_CONTENT_MODEL")) {
- TypeRef var7 = var14.getTermRef();
- if (var7 != null) {
- }
- }
- }
- }
- }
- }
- }
-
- }
- }
- }
-
- public Vector getWarnings() {
- return this.warnings;
- }
-
- private void addWarning(BaseDeclaration var1, int var2, String var3, int var4) {
- this.warnings.addElement(new DeclError(var1, new ParserException(var2, var3, var4)));
- }
-
- private void addWarning(BaseDeclaration var1, int var2, String var3) {
- this.warnings.addElement(new DeclError(var1, new ParserException(var2, var3)));
- }
-
- private void addWarning(BaseDeclaration var1, String var2) {
- this.warnings.addElement(new DeclError(var1, new ParserException(999, var2)));
- }
-
- private void addWarning(BaseDeclaration var1, String var2, int var3) {
- this.warnings.addElement(new DeclError(var1, new ParserException(999, var2, var3)));
- }
- }
-